
package com.odontosis.service;

import java.util.Collection;
import java.util.Date;
import java.util.List;

import com.odontosis.as.OdontosisApplicationService;
import com.odontosis.dao.PacienteDAO;
import com.odontosis.entidade.Paciente;
import com.odontosis.util.StringUtilsOdontosis;

public class PacienteService extends OdontosisApplicationService<Paciente> {

	private final PacienteDAO pacienteDAO = new PacienteDAO();
	
	public PacienteService() throws Exception{
		super(Paciente.class, new PacienteDAO());
	}
	
	public Integer retornarProximoNumeroPasta(){
		Integer numero = pacienteDAO.buscarMaiorNumeroPasta();
		if(numero == null){
			numero = 0;
		}
		return ++numero;
	}
	
	public void gerarNumeroPasta(Paciente paciente){
		if(StringUtilsOdontosis.isVazia(paciente.getNumeroPasta())){
			paciente.setNumeroPasta(retornarProximoNumeroPasta().toString());
			pacienteDAO.update(paciente);
		}
	}
	
	public List<Paciente> pesquisarParaAutoComplete(String parte){
		return pacienteDAO.pesquisarParaAutoComplete(parte);
	}
	
	public List<Paciente> pesquisarParaAutoCompleteComIpsm(String parte){
		return pacienteDAO.pesquisarParaAutoCompleteComIpsm(parte);
	}
	
	public List<Paciente> pesquisarPorNome(String nome){
		return pacienteDAO.pesquisarPorNome(nome);
	}

	public Collection<Paciente> pesquisarPorNomeECodigo(String codigo, String nome,boolean comIpsm) {
		return pacienteDAO.pesquisarPorNomeECodigo(codigo, nome,comIpsm);
	}
		
	public Paciente buscarPorNumeroPaciente(String codigo){
		return pacienteDAO.buscarPorNumeroPaciente(codigo);
	}
	
	public List<Paciente> buscarPacienteEmTratamentoOuEmAcompanhamento(){
		return pacienteDAO.buscarPacienteEmTratamentoOuEmAcompanhamento();
	}
	
	public List<Paciente> buscarPacienteEmTratamentoOuEmAcompanhamento(String codigo, String nome, int maxResultado){
		return pacienteDAO.buscarPacienteEmTratamentoOuEmAcompanhamento(codigo,nome,maxResultado);
	}
	
	public List<Paciente> buscarPacientesPorAniversario(Date inicio, Date fim, String nomePaciente) {
		return pacienteDAO.pesquisarPorAniversario(inicio, fim, nomePaciente);
	}

	@Override
	public void saveOrUpdate(Paciente entidade) {
		pacienteDAO.saveOrUpdate(entidade);
	}
	
	

}
